package com.droid.faces;

import com.droid.persistor.dao.Categoria;
import com.droid.persistor.dao.Gasto;
import com.droid.persistor.dao.Objetivo;
import com.droid.persistor.dao.Recordatorio;
import com.droid.persistor.dao.Tipo_Gasto;
import com.droid.persistor.dao.Usuario;
import com.droid.persistor.facade.PersistorFacade;
import com.droid.users.facade.UsuarioFacade;

import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import org.primefaces.event.RowEditEvent;

@ManagedBean
@SessionScoped
public class AutoCompleteRecoBean implements Serializable {

	private String mensaje;
	private Date recoDate;

	public void onEdit(RowEditEvent event) {

		try {

			Recordatorio reco = (Recordatorio) event.getObject();

			DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
			Date hoydate = new Date();
	    		    
			FacesContext context = FacesContext.getCurrentInstance();

			if (!hoydate.before(getDate())) {
				FacesMessage errorMessage = new FacesMessage(
						"La fecha de registro deber ser mayor a hoy");
				errorMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
				context.addMessage(null, errorMessage);

			} else {
				
				reco.setFecha(dateFormat.format(getDate()));
				reco.setMensaje(getMensaje());
				reco.setEstado("NOVENCIDO");

				PersistorFacade pFacade = new PersistorFacade();
				pFacade.updateRecordatorio(reco) ;
			}

		} catch (Exception e) {

		}
	}

	public void eliminarReco(Recordatorio reco) {
		try {

			FacesContext context = FacesContext.getCurrentInstance();
			PersistorFacade facade = new PersistorFacade();
			
			if (reco.getIdRecordatorio() != null) {
				facade.deleteRecordatorio(reco.getIdRecordatorio());
			}

		} catch (Exception e) {
			// Mensagens...
			System.out.println("Entro edit error");

		}
	}

	public String getMensaje() {
		return mensaje;
	}

	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}

	// Date
	public Date getDate() {
		return recoDate;
	}

	public void setDate(Date rdate) {
		this.recoDate = rdate;
	}

	public ArrayList<Recordatorio> getListaRecordatorios() {

		LoginRequest lgt = (LoginRequest) FacesContext.getCurrentInstance()
				.getExternalContext().getSessionMap().get("loginRequest");
		PersistorFacade facade = new PersistorFacade();
		Usuario usu = facade.obtenerUsuario(lgt.getUsername());

		PersistorFacade pFacade = new PersistorFacade();

		ArrayList<Recordatorio> resp = pFacade.getRecordatoriosUsuario(usu
				.getIdUsuario());

		return resp;

	}

	public String recordatorioAlta() {

		LoginRequest lgt = (LoginRequest) FacesContext.getCurrentInstance()
				.getExternalContext().getSessionMap().get("loginRequest");
		Gasto gto = new Gasto();
		String msg = null;
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
		Date hoydate = new Date();

		FacesContext context = FacesContext.getCurrentInstance();

		if (!hoydate.before(getDate())) {
			FacesMessage errorMessage = new FacesMessage(
					"La fecha de registro deber ser mayor a hoy");
			errorMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
			context.addMessage(null, errorMessage);

			return (null);
		} else {

			PersistorFacade facade = new PersistorFacade();
			Usuario usu = facade.obtenerUsuario(lgt.getUsername());

			PersistorFacade pFacade = new PersistorFacade();

			Recordatorio reco = new Recordatorio();
			String oDate = dateFormat.format(getDate());

			reco.setFecha(oDate);
			reco.setIdGasto(0);
			reco.setMensaje(this.mensaje);
			reco.setNombre("RECORDATORIO");
			reco.setIdUsuario(usu.getIdUsuario());

			facade.altaRecordatorio(reco);

			return ("menu");
		}
	}
}